#ifndef _MOE_RINGMIGRATION
#define _MOE_RINGMIGRATION

#include "engine/Migration.hh"
#include "engine/netstream.hh"


class RingMigration : public Migration {


public:

    RingMigration(Selection *selection, NetStream *stream) : Migration(selection, stream) {
        buildNet();
    }

    virtual ~RingMigration() {
    }

private:

    void buildNet();


    /** by default the inmigrationPolicy accepts an "inmigrant" if and only if he dominates some solution in the
    *  current population
    */
    void inmigrationPolicy(Population *population, ArrayList<Solution>* inmigrants);
};



#endif
